package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.redisson.spring.session.config.EnableRedissonHttpSession;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/*** 2-阿里对象存储
 * 1、引入 oss-statter
 * 2、配置 key endpoint
 * 3、 ossCelint 掉接口
 *
 * 3-JSR303
 * 1、添加校验注解
 * 2、开启校验注解 @Valid
 * 3、 后面再放一个 BindingResult 接收异常处理
 * 列如： public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
 *
 *3-1高级 ： 分组校验
 *1、 给注解上标注 groups
 *        @Null(message = "新增不能指定id", groups = {AddGroup.class})
 *    @NotNull(message = "修改必须指定id", groups = {UpdateGroup.class})
 * 2、controller  @Validated({UpdateGroup.class})
 *
 * 3-2 自定义注解
 * 1、编写自定义教研注解  ListValue
 * 2、编写自定义校验器 LisyValueConstraintValidator
 * 3、关联校验器和注解
 * @Constraint(
 *         validatedBy = {LisyValueConstraintValidator.class，可以使用多个校验器}
 * )
 *
 *
 * 4-统一异常处理
 * @ControllerAdvice
 *  @ExceptionHandler(value = MethodArgumentNotValidException.class)
 */

/**
 * @author yefei.shi
 * 1-整合mybatis-plus依赖
 *  2-配置
 *   配置数据源
 *   1、驱动
 *   2、配置application.yml数据源
 *   配置mybatis-plus
 *    1、配置 MapperScan
 *    2、告诉sql映射文件地址
 * @return
 *
 * 2- 如何设置mybatis plus 的逻辑删除
 *
 * 1-配置全局删除规则 （可省略）
 * 2-配置逻辑删除的组件Bean （可省略）
 * 3-给字段配置 @TableLogic
 */
/**
 * thymeleaf 依赖 关闭缓存
 * static下面文件可以直接访问
 * 页面放 themplate下面 直接访问
 * springboot 默认回去找 indexh
 */

@EnableRedissonHttpSession
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}


